home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / T-COMAL Today / (k)t5.d64 / bigdump'nec.src < prev    next >
Text File  |  2007-02-28  |  4KB  |  341 lines

  1. ; HIGH-RES SCREEN DUMP ROUTINE
  2. ; V4.0  4/18/84  (C) W. LOUIE
  3. ; MODIFIED BY PETER FOILES FOR
  4. ; NEC 8023 10/14/84
  5. ;
  6. ; ASSEMBLE IN HIGH RAM [$CA00].
  7. ; [ SYS 51712 ]  TO DUMP SCREEN.
  8. ; PRESS POUND KEY TO ABORT DUMP.
  9. ;
  10. ; HIGH-RES SCREEN MAY BE DUMPED
  11. ; AT ANY TIME.  BIT-MAP SCREEN
  12. ; IMAGE LIES UNTOUCHED BELOW
  13. ; SYSTEM ROM AT [$E000].
  14. ;
  15. ;
  16. ; KERNAL / SYSTEM EQUATES
  17. SCNKEY = $FF9F
  18. SETLFS = $FFBA
  19. SETNAM = $FFBD
  20. OPEN = $FFC0
  21. CLOSE = $FFC3
  22. CHKOUT = $FFC9
  23. CHROUT = $FFD2
  24. CLALL = $FFE7
  25. GETIN = $FFE4
  26. TIMER = $DC0E
  27. BUFFER = $CE00
  28. PRTPAT = $CFF0
  29. ADDR1 = $CFFA
  30. ADDR2 = $CFFB
  31. ROW = $CFFC
  32. COL = $CFFD
  33. TEMP1 = $CFFE
  34. TEMP2 = $CFFF
  35. TEMP3 = $CF50
  36. TEMP4 = $CF51
  37. ;
  38. ; ZERO PAGE LOCATIONS
  39. BITMAP = $8B
  40. MAPHI = $8C
  41. BUFR = $8D
  42. BUFHI = $8E
  43. FLAG = $8F
  44. ;
  45. ; ASSEMBLE IN HIGH RAM
  46.  *= $CA00
  47. ;
  48. ; DISABLE INTERRUPTS
  49.  LDA TIMER
  50.  STA TEMP4
  51.  AND #$FE
  52.  STA TIMER
  53. ; OPEN THE PRINTER [ OPEN4,4,25 ]
  54.  LDA #$04
  55.  TAX
  56.  LDY #$19
  57.  JSR SETLFS
  58.  LDA #$00
  59.  TAX
  60.  TAY
  61.  JSR SETNAM
  62.  JSR OPEN
  63.  LDX #$04
  64.  JSR CHKOUT
  65. ; SET UP FOR INCREMENTAL MODE
  66. ; AND 8 DOT LINE SPACING
  67. LDA #$1B
  68. JSR CHROUT
  69. LDA #$5B
  70. JSR CHROUT
  71. LDA #$1B
  72. JSR CHROUT
  73. LDA #$54
  74. JSR CHROUT
  75. LDA #$31
  76. JSR CHROUT
  77. LDA #$36
  78. JSR CHROUT
  79. ; SCREEN BIT MAP LOCATION - $E000
  80.  LDA #$00
  81.  STA BITMAP
  82.  STA ADDR1
  83.  STA ROW
  84.  LDA #$E0
  85.  STA MAPHI
  86.  STA ADDR2
  87. ; BUFFER LOCATION - $CE00
  88. NEWROW LDA #$00
  89.  STA BUFR
  90.  LDA #$CE
  91.  STA BUFHI
  92. ; SET FLAG TO ZERO
  93.  LDA #$00
  94.  STA FLAG
  95. ; SET COLUMN COUNT TO ZERO
  96.  STA COL
  97. ; LOAD BUFFER WITH 1 ROW
  98. ;
  99. ; SAVE 6510 I/O REGISTER AND
  100. ; DISABLE EVERYTHING TO ALLOW
  101. ; RAM TO BE READ INSTEAD OF ROM
  102.  LDA $01
  103.  STA TEMP1
  104.  LDA #$00
  105.  STA $01
  106. ;
  107. LOAD LDY #$00
  108. VICROW LDA (BITMAP),Y
  109.  LDX #$00
  110. EPSCOL ASL A
  111.  ROR PRTPAT,X
  112.  INX
  113.  CPX #$08
  114.  BCC EPSCOL
  115.  INY
  116. CPY #$08
  117.  BNE VICROW
  118. ; MOVE PRTPAT TO BUFFER
  119.  LDY #$00
  120. MOVE LDA PRTPAT,Y
  121.  STA (BUFR),Y
  122.  INY
  123.  CPY #$08
  124.  BNE MOVE
  125. ; INCREMENT BUFFER INDEX BY 8
  126.  CLC
  127.  LDA BUFR
  128.  ADC #$08
  129.  STA BUFR
  130.  LDA BUFHI
  131.  ADC #$00
  132.  STA BUFHI
  133. ; INCREMENT BIT MAP INDEX BY 8
  134.  CLC
  135.  LDA BITMAP
  136.  ADC #$08
  137.  STA BITMAP
  138.  LDA MAPHI
  139.  ADC #$00
  140.  STA MAPHI
  141. ; INCREMENT COLUMN COUNT
  142.  INC COL
  143. ; FINISHED WITH ROW <40 CHAR.> ?
  144.  LDA COL
  145.  CMP #$28
  146.  BNE LOAD
  147. ; BUFR NOW CONTAINS A ROW IN
  148. ; THE NEC COLUMN FORMAT.
  149. ;
  150. ; ENABLE SYSTEM ROM AGAIN
  151.  LDA TEMP1
  152.  STA $01
  153. ;
  154. ;
  155. ; SET UP PRINTER FOR GRAPHICS MODE
  156. ; 8 COL/CHAR X 40 CHAR = 320 COL
  157. PRINT LDA #$1B
  158. JSR CHROUT
  159. LDA #$53
  160. JSR CHROUT
  161. LDA #$30
  162. JSR CHROUT
  163. LDA #$36
  164. JSR CHROUT
  165. LDA #$34
  166. JSR CHROUT
  167. LDA #$30
  168. JSR CHROUT
  169. ; SEND BUFFER TO PRINTER
  170.  LDX #$00
  171. OUT1 LDA BUFFER,X
  172.  JSR TOP
  173.  INX
  174.  CPX #$A0
  175.  BNE OUT1
  176.  LDX #$00
  177. OUT2 LDA BUFFER+$A0,X
  178.  JSR TOP
  179.  INX
  180.  CPX #$A0
  181.  BNE OUT2
  182. ; DUMP BUFFER WITH CR AND LF
  183.  LDA #$0D
  184.  JSR CHROUT
  185. LDA #$0A
  186. JSR CHROUT
  187. LDA #$1B
  188. JSR CHROUT
  189. LDA #$53
  190. JSR CHROUT
  191. LDA #$30
  192. JSR CHROUT
  193. LDA #$36
  194. JSR CHROUT
  195. LDA #$34
  196. JSR CHROUT
  197. LDA #$30
  198. JSR CHROUT
  199. LDX #$00
  200. OUT3 LDA BUFFER,X
  201. JSR BOTTOM
  202. INX
  203. CPX #$A0
  204. BNE OUT3
  205. LDX #$00
  206. OUT4 LDA BUFFER+$A0,X
  207. JSR BOTTOM
  208. INX
  209. CPX #$A0
  210. BNE OUT4
  211. LDA #$0D
  212. JSR CHROUT
  213. LDA #$0A
  214. JSR CHROUT
  215. ; POUND KEY PRESSED ?
  216.  JSR SCNKEY
  217.  JSR GETIN
  218.  CMP #$5C
  219. ; YES, ABORT SCREEN DUMP
  220.  BEQ QUIT
  221. ; INCREMENT ROW COUNT
  222. NEXT INC ROW
  223. ; DUMPED ALL 25 ROWS ?
  224.  LDA ROW
  225.  CMP #$19
  226.  BEQ QUIT
  227. ; INCREMENT BIT MAP INDEX BY 320
  228.  CLC
  229.  LDA ADDR1
  230.  ADC #$40
  231.  STA ADDR1
  232.  STA BITMAP
  233.  LDA ADDR2
  234.  ADC #$01
  235.  STA ADDR2
  236.  STA MAPHI
  237. ; GET THE NEXT ROW
  238.  JMP NEWROW
  239. ;
  240. ; END OF DUMP ROUTINE
  241. ;
  242. ; RESET PRINTER MODE
  243. QUIT LDA #$1B
  244.  JSR CHROUT
  245.  LDA #$41
  246.  JSR CHROUT
  247.  LDA #$0D
  248.  JSR CHROUT
  249. ; CLOSE 4,4 - RESET I/O CHANNELS
  250.  LDA #$04
  251.  JSR CLOSE
  252.  JSR CLALL
  253. ; ENABLE INTERRUPTS
  254.  LDA TEMP4
  255.  STA TIMER
  256. ; RETURN TO COMAL
  257.  RTS
  258. ;
  259. TOP STA TEMP1
  260. AND #$01
  261. STA TEMP2
  262. ASL A
  263. ADC TEMP2
  264. STA TEMP2
  265. LDA TEMP1
  266. AND #$02
  267. ASL A
  268. STA TEMP3
  269. ADC TEMP2
  270. STA TEMP2
  271. LDA TEMP3
  272. ASL A
  273. ADC TEMP2
  274. STA TEMP2
  275. LDA TEMP1
  276. AND #$04
  277. ASL A
  278. ASL A
  279. STA TEMP3
  280. ADC TEMP2
  281. STA TEMP2
  282. LDA TEMP3
  283. ASL A
  284. ADC TEMP2
  285. STA TEMP2
  286. LDA TEMP1
  287. AND #$08
  288. ASL A
  289. ASL A
  290. ASL A
  291. STA TEMP3
  292. ADC TEMP2
  293. STA TEMP2
  294. LDA TEMP3
  295. ASL A
  296. ADC TEMP2
  297. JSR CHROUT
  298. JSR CHROUT
  299. RTS
  300. BOTTOM STA TEMP1
  301. AND #$10
  302. LSR A
  303. LSR A
  304. LSR A
  305. STA TEMP2
  306. LSR A
  307. ADC TEMP2
  308. STA TEMP2
  309. LDA TEMP1
  310. AND #$20
  311. LSR A
  312. LSR A
  313. STA TEMP3
  314. ADC TEMP2
  315. STA TEMP2
  316. LDA TEMP3
  317. LSR A
  318. ADC TEMP2
  319. STA TEMP2
  320. LDA TEMP1
  321. AND #$40
  322. LSR A
  323. STA TEMP3
  324. ADC TEMP2
  325. STA TEMP2
  326. LDA TEMP3
  327. LSR A
  328. ADC TEMP2
  329. STA TEMP2
  330. LDA TEMP1
  331. AND #$80
  332. STA TEMP3
  333. ADC TEMP2
  334. STA TEMP2
  335. LDA TEMP3
  336. LSR A
  337. ADC TEMP2
  338. JSR CHROUT
  339. JSR CHROUT
  340. RTS
  341.